#ifndef VIDEOBOX_H
#define VIDEOBOX_H

#include <QWidget>
#include <QPixmap>
#include "playerpage.h"
#include "model/data.h"
#include "model/datacenter.h"

namespace Ui {
class VideoBox;
}

class VideoBox : public QWidget
{
    Q_OBJECT

public:
    explicit VideoBox(const model::VideoInfo& videoInfo, QWidget *parent = nullptr);
    ~VideoBox();

    bool eventFilter(QObject *watched, QEvent *event) override;

    // 是否显示 “...” 按钮，该按钮主要用来支持删除我的页面中的视频
    void showMoreBtn(bool isShow);

private:
    void updateVideoInfoUI();

    //  重写paintEvent事件，避免图片平铺重叠
    void paintEvent(QPaintEvent* event)override;

    void setVideoDuration(int64_t duration);

    void setVideoImage(const QString& photoFileId);

    void setUserAvatar(const QString& userAvatarId);

private slots:
    // 处理在视频封面和视频标题上点击
    void onPlayBtnClicked();

    // 视频封面图片下载成功
    void getVideoImageDone(const QString& imageId, QByteArray imageData);

    // 设置用户头像成功
    void getUserAvatarDone(const QString& imageId, QByteArray imageData);

    // 获取弹幕成功
    void getVideoBarrageSucces(const QString& videoId);

    // ... 按钮点击
    void onMoreBtnClicked();

signals:
    void deleteVideo(const QString& videoId);

private:
    Ui::VideoBox *ui;
    PlayerPage* playPage = nullptr; // 播放⻚⾯指针
    model::VideoInfo videoInfo;
    QPixmap videoCoverImage;   // 视频封面画图
    QPixmap userAvatar;        // 用户头像
};

#endif // VIDEOBOX_H
